package org.budo.redis.repository.spring.data;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.budo.redis.repository.BudoRedisRepository;
import org.budo.redis.repository.util.BudoRedisGraphUtil;
import org.springframework.data.redis.connection.RedisConnectionFactory;

import lombok.NoArgsConstructor;

/**
 * @author lmw
 */
@NoArgsConstructor
public class BudoSpringDataRedisRepository implements BudoRedisRepository {
    private RedisConnectionFactory redisConnectionFactory;

    public BudoSpringDataRedisRepository(RedisConnectionFactory redisConnectionFactory) {
        this.redisConnectionFactory = redisConnectionFactory;
    }

    @Override
    public byte[] get(byte[] key) {
        return BudoRedisGraphUtil.springDataRedisGraph().get(this.redisConnectionFactory, key);
    }

    @Override
    public String set(byte[] key, byte[] value) {
        return BudoRedisGraphUtil.springDataRedisGraph().set(this.redisConnectionFactory, key, value);
    }

    @Override
    public Long del(byte[]... keys) {
        return BudoRedisGraphUtil.springDataRedisGraph().del(this.redisConnectionFactory, keys);
    }

    @Override
    public Long del(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long del(String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Long hdel(String key, String[] fields) {
        throw new RuntimeException();
    }

    @Override
    public Long hdel(String key, String field) {
        throw new RuntimeException();
    }

    @Override
    public Boolean exists(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long expire(String key, Number expireInSeconds) {
        throw new RuntimeException();
    }

    @Override
    public Long expireAt(String key, Date expireAt) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> keys(String pattern) {
        throw new RuntimeException();
    }

    @Override
    public Long decr(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long decrBy(String key, Number value) {
        throw new RuntimeException();
    }

    @Override
    public String get(String key) {
        throw new RuntimeException();
    }

    @Override
    public Integer getInteger(String key) {
        throw new RuntimeException();
    }

    @Override
    public String getSet(String key, String value) {
        throw new RuntimeException();
    }

    @Override
    public Long incr(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long incrBy(String key, Number value) {
        throw new RuntimeException();
    }

    @Override
    public Double incrByFloat(String key, Number value) {
        throw new RuntimeException();
    }

    @Override
    public List<String> mget(String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public String mset(String[] keysValues) {
        throw new RuntimeException();
    }

    @Override
    public String mset(Map<String, String> keysValues) {
        throw new RuntimeException();
    }

    @Override
    public Long msetnx(String[] keysValues) {
        throw new RuntimeException();
    }

    @Override
    public Long msetnx(Map<String, String> keysValues) {
        throw new RuntimeException();
    }

    @Override
    public String set(String key, String value) {
        throw new RuntimeException();
    }

    @Override
    public String setex(String key, Number seconds, String value) {
        throw new RuntimeException();
    }

    @Override
    public String setex(byte[] key, Number seconds, byte[] bytes) {
        throw new RuntimeException();
    }

    @Override
    public Long setnx(String key, String value) {
        throw new RuntimeException();
    }

    @Override
    public Boolean hexists(String key, String field) {
        throw new RuntimeException();
    }

    @Override
    public String hget(String key, String field) {
        throw new RuntimeException();
    }

    @Override
    public Map<String, String> hgetAll(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long hincrBy(String key, String field, Number value) {
        throw new RuntimeException();
    }

    @Override
    public Double hincrByFloat(String key, String field, Number value) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> hkeys(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long hlen(String key) {
        throw new RuntimeException();
    }

    @Override
    public List<String> hmget(String key, String[] fields) {
        throw new RuntimeException();
    }

    @Override
    public String hmset(String key, Map<String, String> hash) {
        throw new RuntimeException();
    }

    @Override
    public Long hset(String key, String field, String value) {
        throw new RuntimeException();
    }

    @Override
    public Long hsetnx(String key, String field, String value) {
        throw new RuntimeException();
    }

    @Override
    public List<String> hvals(String key) {
        throw new RuntimeException();
    }

    @Override
    public List<String> blpop(Number timeout, String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public List<String> brpop(Number timeout, String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public String brpoplpush(String source, String destination, Number timeout) {
        throw new RuntimeException();
    }

    @Override
    public String lindex(String key, Number index) {
        throw new RuntimeException();
    }

    @Override
    public Long linsert(String key, Boolean before, String pivot, String value) {
        throw new RuntimeException();
    }

    @Override
    public Long llen(String key) {
        throw new RuntimeException();
    }

    @Override
    public String lpop(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long lpush(String key, String[] values) {
        throw new RuntimeException();
    }

    @Override
    public Long lpushx(String key, String[] values) {
        throw new RuntimeException();
    }

    @Override
    public List<String> lrange(String key, Number start, Number end) {
        throw new RuntimeException();
    }

    @Override
    public Long lrem(String key, Number count, String value) {
        throw new RuntimeException();
    }

    @Override
    public String lset(String key, Number index, String value) {
        throw new RuntimeException();
    }

    @Override
    public String ltrim(String key, Number start, Number end) {
        throw new RuntimeException();
    }

    @Override
    public String rpop(String key) {
        throw new RuntimeException();
    }

    @Override
    public String rpoplpush(String srckey, String dstkey) {
        throw new RuntimeException();
    }

    @Override
    public Long rpush(String key, String[] values) {
        throw new RuntimeException();
    }

    @Override
    public Long rpushx(String key, String[] values) {
        throw new RuntimeException();
    }

    @Override
    public Long sadd(String key, String[] members) {
        throw new RuntimeException();
    }

    @Override
    public Long scard(String key) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> sdiff(String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Long sdiffstore(String dstkey, String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> sinter(String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Long sinterstore(String dstkey, String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Boolean sismember(String key, String member) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> smembers(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long smove(String srckey, String dstkey, String member) {
        throw new RuntimeException();
    }

    @Override
    public String spop(String key) {
        throw new RuntimeException();
    }

    @Override
    public List<String> srandmember(String key, Number count) {
        throw new RuntimeException();
    }

    @Override
    public Long srem(String key, String[] members) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> sunion(String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Long sunionstore(String dstkey, String[] keys) {
        throw new RuntimeException();
    }

    @Override
    public Long zadd(String key, Number score, String member) {
        throw new RuntimeException();
    }

    @Override
    public Long zadd(String key, Map<String, Double> scoreMembers) {
        throw new RuntimeException();
    }

    @Override
    public Long zcard(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long zcount(String key, Number min, Number max) {
        throw new RuntimeException();
    }

    @Override
    public Double zincrby(String key, Number score, String member) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> zrange(String key, Number start, Number end) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> zrangeByScore(String key, Number min, Number max) {
        throw new RuntimeException();
    }

    @Override
    public Long zrank(String key, String member) {
        throw new RuntimeException();
    }

    @Override
    public Long zrem(String key, String[] members) {
        throw new RuntimeException();
    }

    @Override
    public Long zremrangeByRank(String key, Number start, Number end) {
        throw new RuntimeException();
    }

    @Override
    public Long zremrangeByScore(String key, Number start, Number end) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> zrevrange(String key, Number start, Number end) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> zrevrangeByScore(String key, Number max, Number min) {
        throw new RuntimeException();
    }

    @Override
    public Long zrevrank(String key, String member) {
        throw new RuntimeException();
    }

    @Override
    public Double zscore(String key, String member) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> zrangeByLex(String key, String min, String max) {
        throw new RuntimeException();
    }

    @Override
    public Set<String> zrangeByLex(String key, String min, String max, Number offset, Number count) {
        throw new RuntimeException();
    }

    @Override
    public Long zlexcount(String key, String min, String max) {
        throw new RuntimeException();
    }

    @Override
    public Long zremrangeByLex(String key, String min, String max) {
        throw new RuntimeException();
    }

    @Override
    public Object eval(String script) {
        throw new RuntimeException();
    }

    @Override
    public Object eval(String script, List<String> keys, List<String> args) {
        throw new RuntimeException();
    }

    @Override
    public Object eval(String script, Number keyCount, String[] params) {
        throw new RuntimeException();
    }

    @Override
    public String select(Number index) {
        throw new RuntimeException();
    }

    @Override
    public String ping() {
        throw new RuntimeException();
    }

    @Override
    public String echo(String message) {
        throw new RuntimeException();
    }

    @Override
    public String auth(String password) {
        throw new RuntimeException();
    }

    @Override
    public List<String> time() {
        throw new RuntimeException();
    }

    @Override
    public Long lastsave() {
        throw new RuntimeException();
    }

    @Override
    public String info() {
        throw new RuntimeException();
    }

    @Override
    public String info(String section) {
        throw new RuntimeException();
    }

    @Override
    public Long dbSize() {
        throw new RuntimeException();
    }

    @Override
    public List<String> configGet(String pattern) {
        throw new RuntimeException();
    }

    @Override
    public String clientSetname(String name) {
        throw new RuntimeException();
    }

    @Override
    public String clientList() {
        throw new RuntimeException();
    }

    @Override
    public String clientGetname() {
        throw new RuntimeException();
    }

    @Override
    public Long setnx(String key, String value, Number expireInSeconds) {
        throw new RuntimeException();
    }

    @Override
    public Long expire(byte[] key, Number seconds) {
        throw new RuntimeException();
    }

    @Override
    public Long ttl(String key) {
        throw new RuntimeException();
    }

    @Override
    public Long pttl(String key) {
        throw new RuntimeException();
    }
}